﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxEditors;
using System.Configuration;
using DevExpress.Web.ASPxGridView;
using System.Drawing;
using Negocio.BL;
using Entidad;
namespace EvolSoftWeb
{
    public partial class wFrmUsuarioModificar : System.Web.UI.Page
    {
        static List<listaUsuarios> list;


        static List<ListaUsuario_Oficina> listaUsuario_Oficina;

        UsuarioLogic negocioUsuario = new UsuarioLogic();
        protected void Page_Load(object sender, EventArgs e)
        {



            if (!IsPostBack)
            {
              
                list = new List<listaUsuarios>();

                listaUsuario_Oficina = new List<ListaUsuario_Oficina>();

                this.ValidarOperacion();

                cboCliente.SelectedIndex = 0;
                cboCanal.SelectedIndex = 0;
                cboOrgVenta.SelectedIndex = 0;
                cboVendedor.SelectedIndex = 0;


            }








        }


        void ValidarOperacion()
        {

            try
            {

                if (Session["operacion"].ToString() == "1")
                {
                    txtpassword.ClientVisible = true;
                    txtpasswordConfir.ClientVisible = true;
                    lblpass.ClientVisible = true;
                    lblcon.ClientVisible = true;
                    txtUsuario.ClientEnabled = true;

                }
                else
                {
                    btnCambiarPassword.ClientVisible = true;
                    this.CargarDatosUsuarios();


                }

            }
            catch
            {


            }



        }



        public int ultimo = 0;


        public int ultimoM = 0;
        public static int variable = 0;



        void CargarDatosUsuarios()
        {

            txtUsuario.Text = Session["DES_USUARIO"].ToString();
            txtNombreUsuario.Text = Session["DES_NOMBRE"].ToString();
            txtApellidos.Text = Session["DES_APELLIDOS"].ToString();
           // txtCorreoElectronico.Text = Session["DES_EMAIL"].ToString();
            //txtUserCreacion.Text = Session["USR_CREACION"].ToString();
            //cboTipoUsuario.Text = Session["DES_LARGA"].ToString();
            Session["pass"] = txtPasswordNuevo.Text.Trim();

            if (Session["IND_ESTADO"].ToString() == "1")
            {

                cboEstado.SelectedIndex = 0;


            }
            else if (Session["IND_ESTADO"].ToString() == "0")
            {

                cboEstado.SelectedIndex = 1;

            }
            else
            {
                cboEstado.SelectedIndex = 0;

            }

        }

        public struct listaUsuarios
        {
            public int id { get; set; }
            public string nombre { get; set; }
            public string descripcion { get; set; }
            public bool marcar { get; set; }

        }

        void limpiarControles()
        {

            txtApellidos.Text = "";
            txtCorreoElectronico.Text = "";
            txtNombreUsuario.Text = "";


        }

        protected void gvAccesos_Usuarios_PageIndexChanged(object sender, EventArgs e)
        {


        }

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiarControles();
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtApellidos.Text == String.Empty || txtCorreoElectronico.Text == String.Empty || txtNombreUsuario.Text == String.Empty)
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Rellene los campos vacios!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
                else
                {
                    if (Session["operacion"].ToString() == "1")
                    {


                        this.registrar();


                        this.RegistrarT_SEG_USUARIO_OFICINA();
                    }
                    else
                    {

                        this.Actualizar();


                        this.RegistrarT_SEG_USUARIO_OFICINA();
                    }
                }
            }
            catch
            {

            }

        }

        void registrar()
        {

            try
            {

                UsuarioLogic usuarioLogic = new UsuarioLogic();
                if (usuarioLogic.TraerEmail(txtUsuario.Text).Count() > 0)
                {

                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "El usuario ya existe por favor ingrese un usuario diferente";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else
                {



                    if (txtUsuario.Text == String.Empty || txtApellidos.Text == String.Empty || txtCorreoElectronico.Text == String.Empty || txtNombreUsuario.Text == String.Empty || txtpassword.Text == String.Empty || txtpasswordConfir.Text == String.Empty)
                    {
                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "Rellene todo los campos por favor";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }
                    else
                    {
                        T_S_USUARIO usuario = new T_S_USUARIO();
                        usuario.ID_USUARIO = txtUsuario.Text;
                        usuario.DES_NOMBRE = txtNombreUsuario.Text;
                        usuario.DES_PASSWORD = negocioUsuario.EncriptarPasswordUser(this.txtpassword.Text);

                        usuario.IND_ESTADO = cboEstado.Text.Substring(0, 1);
                        //usuario.TIPO_USUARIO = Convert.ToString(cboTipoUsuario.SelectedItem.Value);

                        if (CheckBoxRecordar.Checked == true)
                        {
                            usuario.IND_COOKIE = "S";
                        }
                        else
                        {

                            usuario.IND_COOKIE = "N";
                        }

                        if (negocioUsuario.insert(usuario))
                        {
                            this.insertarUsuarioGrupo();
                            lblmsj.Text = String.Empty;
                            lblmsj.Text = "Se grabo correctamente  ";
                            string script = "ShowMsj();";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                            this.limpiarControles();
                        }
                        else
                        {
                            lblmsj.Text = String.Empty;
                            lblmsj.Text = "Error no se pudo grabar ";
                            string script = "ShowMsj();";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                        }



                    }


                }


            }
            catch { }






        }

        void insertarUsuarioGrupo()
        {

            try
            {
                List<Object> selectItems = gvAccesos_Usuarios.GetSelectedFieldValues("id");

                foreach (object selectItemId in selectItems)
                {

                    negocioUsuario.PA_insertarUsuGrupo(txtUsuario.Text, (int)selectItemId);
                }
            }
            catch
            {

            }

        }

        void Actualizar()
        {

            try
            {

                T_S_USUARIO usuario = new T_S_USUARIO();
                usuario.ID_USUARIO = txtUsuario.Text;
                usuario.DES_NOMBRE = txtNombreUsuario.Text;
                usuario.DES_PASSWORD = Session["pass"].ToString() == "" ? Session["DES_PASSWORD"].ToString() : negocioUsuario.EncriptarPasswordUser(Session["pass"].ToString());
                Session["DES_PASSWORD"] = usuario.DES_PASSWORD;

                usuario.IND_ESTADO = cboEstado.Text.Substring(0, 1);
                //usuario.FEC_REGISTRO = DateTime.Now;

                // usuario.ID_TIPO_USUARIO = Convert.ToInt32(cboTipoUsuario.Value);

                //usuario.TIPO_USUARIO = Convert.ToString(cboTipoUsuario.SelectedItem.Value);


                if (CheckBoxRecordar.Checked == true)
                {
                    usuario.IND_COOKIE = "S";
                }
                else
                {

                    usuario.IND_COOKIE = "N";
                }

                bool flagModificado = negocioUsuario.modificar(usuario);
                if (flagModificado)
                {

                    this.actualizarUsuarioGrupo();

                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Se actualizo correctamente !";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
                else
                {

                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Error al actualizar!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }


            }
            catch (Exception ex)
            {


            }

        }

        void actualizarUsuarioGrupo()
        {

            try
            {
                negocioUsuario.PA_deleteUsuGrupo(txtUsuario.Text);
                List<Object> selectItems = gvAccesos_Usuarios.GetSelectedFieldValues("id");

                foreach (object selectItemId in selectItems)
                {
                    negocioUsuario.PA_insertarUsuGrupo(txtUsuario.Text, (int)selectItemId);
                }

            }
            catch
            {

            }



        }

        protected void btnCambiarPassword_Click(object sender, EventArgs e)
        {
            //txtPasswordNuevo.Text = "";
        }

        protected void btnAceptarPop_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtPassWordAnterior.Text == negocioUsuario.DesEncriptarUser(Session["DES_PASSWORD"].ToString()))
                {
                    Session["pass"] = txtPasswordNuevo.Text.Trim();
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "Por favor grabar los cambios para cambiar el nuevo password !";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "El password anterior no es correcto!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }

            }
            catch
            {

            }


        }

        protected void gvAccesos_Usuarios_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            gvAccesos_Usuarios.DataSource = list;
            gvAccesos_Usuarios.DataBind();
        }




        protected void btnAgregarVA_Click(object sender, EventArgs e)
        {

            if (cboVendedor.Text == string.Empty || cboOrgVenta.Text == string.Empty || cboEstado.Text == string.Empty || cboCanal.Text == string.Empty)
            {
                lblmsj.Text = String.Empty;
                lblmsj.Text = "Seleccione las opciones para poder agregar ";
                string script = "ShowMsj();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
            else
            {


            }
        }

        protected void grdUsuarioVendedor_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {

        }

        protected void btnAgregarCliente_Click(object sender, EventArgs e)
        {




            if (cboCliente.Text == string.Empty)
            {
                lblmsj.Text = String.Empty;
                lblmsj.Text = "Seleccione las opciones para poder agregar ";
                string script = "ShowMsj();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
            else
            {


            }







        }




        protected void grdCliente_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            gvAccesos_Usuarios.Selection.UnselectAll();
            Response.Redirect("wFrmUsuario.aspx?id=" + ConfigurationManager.AppSettings["Seguridad"]);
        }

        protected void btnAgregar_O_Click(object sender, EventArgs e)
        {

            if (comapararUsuario_Oficina())
            {
                lblmsj.Text = String.Empty;
                lblmsj.Text = "El registro ya esta agregado por favor agregue otro ";
                string script = "ShowMsj();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
            else
            {

                this.AgregarUsuario_Oficina();
            }
        }


        bool comapararUsuario_Oficina()
        {


            foreach (ListaUsuario_Oficina row in listaUsuario_Oficina)
            {
                if (row.ID_ORG_VTA == Convert.ToInt32(cboOrganizacion_O.SelectedItem.Value) && row.ID_OFI_VTA == Convert.ToInt32(cboOficina_O.SelectedItem.Value))
                {
                    return true;
                }
            }

            return false;
        }


        void AgregarUsuario_Oficina()
        {


            try
            {
                ListaUsuario_Oficina objuO = new ListaUsuario_Oficina();

                objuO.ID_OFI_VTA = Convert.ToInt32(cboOficina_O.SelectedItem.Value);
                objuO.ID_ORG_VTA = Convert.ToInt32(cboOrganizacion_O.SelectedItem.Value);
                objuO.DES_OFICINA = cboOficina_O.Text;
                objuO.DES_ORGANIZACION = cboOrganizacion_O.Text;
                listaUsuario_Oficina.Add(objuO);
                grdUsuarioOficina.DataSource = listaUsuario_Oficina;
                grdUsuarioOficina.DataBind();
            }
            catch
            {


            }






        }


        public struct ListaUsuario_Oficina
        {


            public int ID_ORG_VTA { get; set; }
            public int ID_OFI_VTA { get; set; }
            public string DES_ORGANIZACION { get; set; }
            public string DES_OFICINA { get; set; }
            public int IND_ESTADO { get; set; }
        }




        void RegistrarT_SEG_USUARIO_OFICINA()
        {

            try
            {
                UsuarioLogic usu = new UsuarioLogic();
                foreach (ListaUsuario_Oficina item in listaUsuario_Oficina)
                {
                    usu.InsertarT_SEG_USUARIO_OFICINA(txtUsuario.Text, item.ID_ORG_VTA, item.ID_OFI_VTA);

                }

            }
            catch
            {


            }




        }



        protected void btnAceptarA_Click(object sender, EventArgs e)
        {
            try
            {



            }
            catch
            {

            }


        }

        protected void grdUsuarioOficina_HtmlRowPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e)
        {
            if (e.RowType != GridViewRowType.Data) return;
            int ind_estado = Convert.ToInt32(e.GetValue("IND_ESTADO"));
            if (ind_estado == 1)
                e.Row.BackColor = Color.LightPink;
        }

        protected void btnActivar_Click(object sender, EventArgs e)
        {

        }

        protected void grdUsuarioOficina_AfterPerformCallback(object sender, ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            grdUsuarioOficina.DataSource = listaUsuario_Oficina;
            grdUsuarioOficina.DataBind();
        }
    }

}